Wang Haihua
🍈 🍉🍊 🍋 🍌
对于 $2\times 2$ 矩阵 $\pmb A$, 计算行列式的方法是 $$ \pmb A=\left[\begin{matrix} a & b\cr c & d \end{matrix}\right] \qquad\text{则}\qquad \text{det}\pmb A=ad-bc $$
$\pmb A$ 矩阵的$(i,j)$-余子式表示为 $C_{ij}$
$$C_{i j}=(-1)^{i+j} \operatorname{det} A_{i j} = (-1)^{i+j} M_{ij}$$ 其中 $M_{ij}$ 是除去第$i$行第$j$列之后的 子行列式(minor determinant)
考虑矩阵 $\pmb A$ $$A=\left[\begin{array}{rrr} 1 & 5 & 0 \\ 2 & 4 & -1 \\ 0 & -2 & 0 \end{array}\right]$$ 它的余子式展开为 $$\begin{aligned} \operatorname{det} A &=1 \cdot \operatorname{det}\left[\begin{array}{rr} 4 & -1 \\ -2 & 0 \end{array}\right]-5 \cdot \operatorname{det}\left[\begin{array}{cc} 2 & -1 \\ 0 & 0 \end{array}\right]+0 \cdot \operatorname{det}\left[\begin{array}{rr} 2 & 4 \\ 0 & -2 \end{array}\right] \\ &=1(0-2)-5(0-0)+0(-4-0)=-2 \end{aligned}$$
每个子行列式前面的标量是$\pmb A$的第一行,子行列式是$\pmb A$的余子式。
更一般地,第$i$行或第$j$列的余子式展开为 $$ \operatorname{det} A=a_{i 1} C_{i 1}+a_{i 2} C_{i 2}+\cdots+a_{i n} C_{i n} $$ $$ \operatorname{det} A=a_{1 j} C_{1 j}+a_{2 j} C_{2 j}+\cdots+a_{n j} C_{n j} $$
考虑下面的矩阵并进行余子式展开 $$A=\left[\begin{matrix}49 & 0 & 61\\73 & 22 & 96\\2 & 0 & 32\end{matrix}\right]$$
对有两个0的列进行余因子展开:
$$\operatorname{det} A = a_{12}(-1)^{1+2}C_{12}+a_{22}(-1)^{2+2}C_{22}+a_{32}(-1)^{3+2}C_{32}$$余子式矩阵(Cofactor matrix)是包含原矩阵所有余子式的矩阵
$$A=\left[\begin{array}{rrr} C_{11} & C_{12} & C_{13} \\ C_{21} & C_{22} & C_{23} \\ C_{31} & C_{32} & C_{33} \end{array}\right]= \left[\begin{array}{rrr} (-1)^{1+1}M_{11} & (-1)^{1+2}M_{12} & (-1)^{1+3}M_{13} \\ (-1)^{2+1}M_{21} & (-1)^{2+2}M_{22} & (-1)^{2+3}M_{23} \\ (-1)^{3+1}M_{31} & (-1)^{3+2}M_{32} & (-1)^{3+3}M_{33} \end{array}\right] $$如果 $\pmb A$ 是一个三角矩阵,我们可以重复地用余子式展开,这个矩阵的行列式就是主对角线上元素的乘积
$$ \operatorname{det}A_{n\times n} = \prod_{i=1}^n A_{ii} $$其中 $A_{ii}$ 是对角线上的元素。
上三角矩阵 $$\left[\begin{matrix}85 & 69 & 86 & 17 & 19\\0 & 95 & 59 & 7 & 19\\0 & 0 & 44 & 70 & 65\\0 & 0 & 0 & 63 & 42\\0 & 0 & 0 & 0 & 20\end{matrix}\right]$$ 下三角矩阵 $$\left[\begin{matrix}85.0 & 0.0 & 0.0 & 0.0 & 0.0\\58.0 & 95.0 & 0.0 & 0.0 & 0.0\\58.0 & 78.0 & 44.0 & 0.0 & 0.0\\65.0 & 96.0 & 50.0 & 63.0 & 0.0\\27.0 & 67.0 & 60.0 & 25.0 & 20.0\end{matrix}\right]$$
性质6的证明: $$\begin{aligned} |A B| &=\left|E_{p} \cdots E_{1} B\right|=\left|E_{p}\right|\left|E_{p-1} \cdots E_{1} B\right|=\cdots \\ &=\left|E_{p}\right| \cdots\left|E_{1}\right||B|=\cdots=\left|E_{p} \cdots E_{1}\right||B| \\ &=|A||B| \end{aligned}$$
性质7的证明: 因为 $\text{det} B = k\, \text{det} A$, $A$ 的某一行乘上 $k$ 得到 $B$.那么所有行乘上$k$, 就有 $n$个 $k$ 乘在 $\text{det} A$前头,即 $k^n \text{det} A$
性质8的证明: $$\begin{aligned} &\begin{aligned} A A^{-1} &=I \\ \left|A A^{-1}\right| &=|I| \end{aligned}\\ &|A|\left|A^{-1}\right|=1\\ &\left|A^{-1}\right|=\frac{1}{|A|} \end{aligned}$$
对于任意 $n\times n$ 矩阵 $A$ 和向量 $b$, 将$A$中 第$i$列 用$b$替换得到的矩阵记为$A_i(b)$.
$$A_{i}(\mathbf{b})=\left[\begin{array}{lllll} \mathbf{a}_{1} & \cdots & \mathbf{b} & \cdots & \mathbf{a}_{n} \end{array}\right]$$克莱姆法则讲的是 $$x_{i}=\frac{\operatorname{det} A_{i}(\mathbf{b})}{\operatorname{det} A}, \quad i=1,2, \ldots, n$$
证明:
$$\begin{aligned} A \cdot I_{i}(\mathbf{x}) &=A\left[\mathbf{e}_{1} \quad \cdots \quad \mathbf{x} \quad \cdots \quad \mathbf{e}_{n}\right]=\left[\begin{array}{llllll} A \mathbf{e}_{1} & \cdots & A \mathbf{x} & \cdots & A \mathbf{e}_{n} \end{array}\right] \\ &=\left[\begin{array}{llllll} \mathbf{a}_{1} & \cdots & \mathbf{b} & \cdots & \mathbf{a}_{n} \end{array}\right]=A_{i}(\mathbf{b}) \end{aligned}$$利用行列式性质 $$(\operatorname{det} A)\left(\operatorname{det} I_{i}(\mathbf{x})\right)=\operatorname{det} A_{i}(\mathbf{b})$$ 利用余子式展开 $\text{det}I_{i}(\mathbf{x})$ 就是 $x_i$.于是证明了克莱姆法则。
另一个求$A^{-1}$ 的方法是 $$A^{-1}=\frac{1}{\operatorname{det} A}\left[\begin{array}{cccc} C_{11} & C_{21} & \cdots & C_{n 1} \\ C_{12} & C_{22} & \cdots & C_{n 2} \\ \vdots & \vdots & & \vdots \\ C_{1 n} & C_{2 n} & \cdots & C_{n n} \end{array}\right]$$
右边的余子式矩阵称为伴随矩阵(adjugate 或 classical adjoint matrix)
证明: 我们定义 $x$ 为$A^{-1}$的第 $j$ 列 满足 $$ Ax= e_j $$
且$e_j$ 是 单位矩阵的第$j$列, $x$的第 $j$个元素是$A^{-1}$的第 $(i,j)$元素 .根据克莱姆法则,
$$\left\{(i, j) \text { -entry of } A^{-1}\right\}=x_{i}=\frac{\operatorname{det} A_{i}\left(\mathbf{e}_{j}\right)}{\operatorname{det} A}$$$A_i(e_j)$第 $i$ 列的余子式展开,得到 $$\operatorname{det} A_{i}\left(\mathbf{e}_{j}\right)=(-1)^{i+j} \operatorname{det} A_{j i}=C_{j i}$$
import sympy as sy
def pl(m):
x= '$$'+sy.latex(m)+'$$'
print(x)
import numpy as np
import matplotlib.pyplot as plt
plt.rcParams['font.family']=['SimHei']
plt.rcParams['axes.unicode_minus'] = False
%matplotlib inline
import scipy as sp
import scipy.linalg
def round_expr(expr, num_digits):
return expr.xreplace({n : round(n, num_digits) for n in expr.atoms(sy.Number)})
a, b, c, d, e, f, g, h, i = sy.symbols('a, b, c, d, e, f, g, h, i', real = True)
A = sy.Matrix([[a, b], [c, d]])
A.det()
B = sy.Matrix([[a, b, c], [d, e, f], [g, h, i]])
B.det()
A = sy.Matrix([[49, 0, 61], [73, 22, 96], [2, 0, 32]]);A
A = np.round(np.random.rand(5,5)*100)
A_triu = np.triu(A); A_triu
A_tril = np.tril(A)
A_u = sy.Matrix(A_triu.astype('int'))
A_l = sy.Matrix(A_tril)